![require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages](https://cdn.sanity.io/images/cgdhsj6q/production/be8ab80c8efa5907bc341c6fefe9aa20d239d890-1600x1097.png?w=400&fit=max&auto=format)
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
jss-compose
Advanced tools
This plugin allows you to use CSS frameworks and legacy code together with JSS as well as reuse Rules more granularly.
Make sure you read how to use plugins in general.
To combine JSS with CSS framework like Material Design Lite or Bootstrap and others.
const styles = {
button: {
// Using space separated class names.
composes: 'btn btn-primary',
color: 'red'
}
buttonActive: {
// Using an array of class names.
composes: ['btn', 'btn-primary'],
color: 'blue'
}
}
Compiles to:
.button-123456 {
color: red;
}
.buttonActive-123456 {
color: blue;
}
When you use it:
<button className={classes.button}>Button</button>
<button className={classes.buttonActive}>Active Button</button>
It renders to:
<button class="button-123456 btn">Button</button>
<button class="button-123456 btn btn-primary">Active Button</button>
Manage element states without rules duplication.
To reference a local rule, prefix the rule name with $
symbol.
const styles = {
button: {
color: 'black'
},
// You can chain compositions
buttonActive: {
composes: '$button',
color: 'red'
},
buttonActiveDisabled: {
composes: '$buttonActive',
opacity: 0.5
},
// Or use arrays
disabled: {
opacity: 0.5
},
active: {
color: 'red'
},
buttonDisabled: {
composes: ['$button', '$active', '$disabled']
}
}
Compiles to:
.button-123456 {
color: black;
}
.buttonActive-123456 {
color: red;
}
.buttonActiveDisabled-123456 {
opacity: 0.5;
}
.disabled-123456 {
opacity: 0.5;
}
.active-123456 {
color: red;
}
/* Rule `buttonDisabled` is not compiled to CSS, because it has no own properties. */
When you use it:
<button className={classes.buttonActiveDisabled}>Active Disabled Button</button>
<button className={classes.buttonDisabled}>Disabled Button with active state</button>
It renders to:
<button class="button-123456 buttonActive-123456">Active Disabled Button</button>
<button class="buttonDisabled-123456 button-123456 active-123456 disabled-123456">Disabled Button with active state</button>
You can compose both local and global classes at the same time.
const styles = {
active: {
color: 'red'
},
button: {
composes: ['$active', 'btn', 'btn-primary'],
color: 'blue'
}
}
Compiles to:
.active-123456 {
color: red;
}
.button-123456 {
color: blue;
}
When you use it:
<button className={classes.button}>Button</button>
It renders to:
<button class="button-123456 active-123456 btn btn-primary">Button</button>
File a bug against cssinjs/jss prefixed with [jss-compose].
npm i
npm test
MIT
FAQs
JSS plugin for classes composition
The npm package jss-compose receives a total of 58,519 weekly downloads. As such, jss-compose popularity was classified as popular.
We found that jss-compose demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.